/**
 * 全站http配置
 *
 * axios参数说明
 * isSerialize是否开启form表单提交
 * isToken是否需要token
 */
import axios from "axios"
import store from "@/store/"
// import router from "@/router/router"
// import i18n from "@/lang"
// import {
//   serialize
// } from "@/util/util"
// import {
//   getToken
// } from "@/util/auth"
// import {
//   Message,
//   Loading
// } from "element-ui"
// import website from "@/config/website"
// import {
//   baseUrl, defaultService, flowableUrl, servicePattern
// } from "@/config/env"
// import NProgress from 'nprogress' // progress bar
// import 'nprogress/nprogress.css' // progress bar style
// import {
//   getStore
// } from "@/util/store"
// import { StringUtils } from "@/EldanComponent/utils/StringUtils"

axios.defaults.timeout = 2000000
// 返回其他状态吗
axios.defaults.validateStatus = function(status) {
  return status >= 200 && status <= 500 // 默认的
}
// 跨域请求，允许保存cookie
// axios.defaults.withCredentials = true;
// NProgress Configuration
// NProgress.configure({
//   showSpinner: false
// });
let loadingInstance = null
// 设置头部
axios.defaults.headers["post"]["Content-Type"] = "application/json"
axios.defaults.headers["put"]["Content-Type"] = "application/json"
axios.defaults.headers["patch"]["Content-Type"] = "application/json"

// HTTP request拦截
axios.interceptors.request.use(config => {
  const { service = "", url, method } = config
  // if (StringUtils.isEmptyOrNull(service)) {
  //   config.url = url.replaceAll(servicePattern, defaultService)
  // } else {
  //   config.url = url.replaceAll(servicePattern, service)
  // }

  // NProgress.start() // start progress bar
  // 展示 loading 效果
  // loadingInstance = Loading.service({
  //   fullscreen: true,
  //   // background: "rgba(0, 0, 0, 0.5)",
  //   // customClass: "custom-loading",
  //   // spinner: "el-icon-loading"
  //   lock: true,
  //   text: "正在请求中,请稍等",
  //   spinner: "el-icon-loading",
  //   background: "rgba(0, 0, 0, 0.7)"
  // })
  // const meta = (config.meta || {})

  // // 用于BI替换接口地址的值  请勿删除
  // if (config.url.indexOf("${BASE_URL}") > -1) {
  //   config.url = config.url.replace("${BASE_URL}", baseUrl)
  // }

  // var menuArry = getStore({ name: "menuAll" })

  // config.headers["ModuleId"] = findMenu(menuArry, window.location.pathname.replace(baseUrl, ""))
  // config.headers["LgType"] = getStore({ name: "language" }) || "zh-CN"

  // const isToken = meta.isToken === false

  // if ((getToken() || getStore({ name: "token" })) && !isToken) {
  //   // 用于工作流token替换接口地址的值  请勿删除
  //   if (config.url.search("workflow-") > -1 && website.netFlowableEnable) {
  //     config.url = config.url.replace(baseUrl, flowableUrl) // 工作流 替换请求地址
  //     config.headers[website.Authorization] = "Bearer " + getStore({ name: "flowabletoken" }) // 让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
  //   } else {
  //     config.headers[website.Authorization] = "Bearer " + (getToken() ?? getStore({ name: "token" })) // 让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
  //   }
  // }

  // headers中配置serialize为true开启序列化
  // if (method === "post" && meta.isSerialize === true) {
  //   config.data = serialize(config.data)
  // }

  // if (method === "get") {
  //   config.params = config.data || config.params
  // }
  return config
}, error => {
  return Promise.reject(error)
})

// HTTPresponse拦截
axios.interceptors.response.use(res => {
  // NProgress.done();
  // 关闭 loading 效果
  // loadingInstance.close()
  // const status = Number(res.data.code) || 0
  // const statusWhiteList = website.statusWhiteList || []
  // const message = res.data.msg || "未知错误"
  // 如果在白名单里则自行catch逻辑处理
  // if (statusWhiteList.includes(status)) return Promise.reject(res)
  // 如果是401则跳转到登录页面
  // if (status === 10401 || res.status === 500) {
  //   store.dispatch("LogOut").then(() => router.push({
  //     path: "/login"
  //   }))
  // }
  // 如果请求为非0否者默认统一处理
  // if (status !== 0 && status !== 200) {
  //   if (message === "Task id is null") { // 表单发起流程：流程发起后，错误提醒
  //     Message({
  //       message: i18n.t("hintFlowInvalid"),
  //       type: "error"
  //     })
  //   } else {
  //     Message({
  //       message: message,
  //       type: "error"
  //     })
  //   }

  console.log('res>>>>>>>>>>>>>>',res)
    return Promise.resolve(res)
  // }
  return res
}, error => {
  console.log("eeeeeeeeeeeeeeeeeeeeee",error)
  let e2 = JSON.stringify(error);
  console.log("e2>>>>>>>>>>>>>>>>>",e2)
  // NProgress.done();
  // 关闭 loading 效果
  // loadingInstance.close()
  // Message({
  //   message: i18n.t("hintRequestTimeout"),
  //   type: "error"
  // })
  return Promise.reject(new Error(error))
})


export default axios
